home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / mods / chip / MelonZoolMus.lha / MelonZoolMus.asm < prev    next >
Assembly Source File  |  1992-09-03  |  6KB  |  277 lines

  1. ; $VER MelonZoolMus.asm (31.9.96)
  2. ; by Kyzer/CSG
  3.     incdir    inc:    ; change as needed
  4.     include    misc/deliplayer.i
  5.  
  6.     SECTION player,code
  7.     PLAYERHEADER tags
  8.     dc.b    "$VER: CUST.MelonZoolMus (31.9.96)",0
  9.     even
  10.  
  11. tags    dc.l    DTP_CustomPlayer,1
  12.     dc.l    DTP_InitPlayer,initply
  13.     dc.l    DTP_EndPlayer,endply
  14.     dc.l    DTP_InitSound,mt_init
  15.     dc.l    DTP_Interrupt,mt_music
  16.     dc.l    DTP_EndSound,mt_end
  17.     dc.l    TAG_DONE
  18.  
  19. initply    move.l    dtg_AudioAlloc(a5),a0
  20.     jmp    (a0)
  21. endply    move.l    dtg_AudioFree(a5),a0
  22.     jmp    (a0)
  23.  
  24. mt_init    movem.l    d0-7/a0-6,-(sp)
  25.     lea    smp0,a2
  26.     moveq    #$10,d0
  27.     lea    $dff0a0,a3
  28.     lea    trk0(pc),a0
  29.     lea    pos0(pc),a1
  30.     bsr.s    .set
  31.     lea    trk1(pc),a0
  32.     lea    pos1(pc),a1
  33.     bsr.s    .set
  34.     lea    trk2(pc),a0
  35.     lea    pos2(pc),a1
  36.     bsr.s    .set
  37.     lea    trk3(pc),a0
  38.     lea    pos3(pc),a1
  39.     bsr.s    .set
  40.     move.w    #$800f,$dff096
  41.     movem.l    (sp)+,d0-7/a0-6
  42.     rts
  43. .set    move.l    a2,(a0)
  44.     clr.l    8(a0)
  45.     clr.l    14(a0)
  46.     clr.l    16(a0)
  47.     move.l    a3,26(a0)
  48.     move.l    a1,30(a0)
  49.     move.l    (a1),34(a0)
  50.     move.l    a1,38(a0)
  51.     move.l    4(a1),46(a0)
  52.     move.l    a2,(a3)
  53.     move.w    d0,4(a3)
  54.     clr.l    6(a3)
  55.     add.l    d0,a3
  56.     rts
  57.  
  58. mt_end    move.w    #15,$dff096
  59.     rts
  60.  
  61. mt_music
  62.     movem.l    d0-7/a0-6,-(sp)
  63.     lea    trk0(pc),a0
  64.     bsr.s    .ply
  65.     lea    trk1(pc),a0
  66.     bsr.s    .ply
  67.     lea    trk2(pc),a0
  68.     bsr.s    .ply
  69.     lea    trk3,a0
  70.     bsr.s    .ply
  71.     movem.l    (sp)+,d0-7/a0-6
  72.     rts    
  73. .ply    subq.w    #1,14(a0)
  74.     bpl    .g
  75.     clr.w    52(a0)
  76.     clr.w    54(a0)
  77. .a    move.l    34(a0),a1
  78.     move.l    46(a0),d3
  79.     moveq    #0,d4
  80.     move.w    (a1),d4
  81.     cmp.w    #128,d4
  82.     bne.s    .b
  83.     clr.l    8(a0)
  84.     move.l    2(a1),(a0)
  85.     addq.l    #6,34(a0)
  86.     move.l    2(a1),d5
  87.     move.l    26(a0),a3
  88.     move.l    d5,(a3)
  89.     bra.s    .a
  90. .b    cmp.w    #129,d4
  91.     bne.s    .c
  92.     move.l    (a0),a3
  93.     move.l    2(a1),86(a3)
  94.     move.l    6(a1),90(a3)
  95.     add.l    #10,34(a0)
  96.     bra.s    .a
  97. .c    cmp.w    #130,d4
  98.     bne.s    .d
  99.     move.w    #1,54(a0)
  100.     bra.s    .e
  101. .d    add.w    d4,d3
  102.     tst.l    d4
  103.     bne.s    .e
  104.     addq.l    #8,30(a0)
  105.     move.l    30(a0),a2
  106.     move.l    4(a2),46(a0)
  107.     move.l    (a2),34(a0)
  108.     bne.s    .a
  109.     move.l    38(a0),30(a0)
  110.     move.l    30(a0),a2
  111.     move.l    4(a2),46(a0)
  112.     move.l    (a2),34(a0)
  113.     bra    .a
  114. .e    tst.w    54(a0)
  115.     bne.s    .f
  116.     clr.l    4(a0)
  117.     clr.w    56(a0)
  118.     move.w    d3,50(a0)
  119. .f    move.w    2(a1),14(a0)
  120.     subq.w    #1,14(a0)
  121.     addq.l    #4,a1
  122.     move.l    a1,34(a0)
  123. .g    move.l    26(a0),a2
  124.     move.l    (a0),a3
  125.     move.w    24(a0),d0
  126.     subq.w    #1,d0
  127.     add.l    d0,d0
  128.     lea    vib,a4
  129.     move.w    (a4,d0.w),d1
  130.     move.w    94(a3),d0
  131.     beq.s    .k
  132.     cmp.w    42(a0),d1
  133.     bcs.s    .i
  134.     add.w    d0,42(a0)
  135.     cmp.w    42(a0),d1
  136.     bhi.s    .h
  137.     move.w    d1,42(a0)
  138. .h    bra.s    .el
  139. .i    sub.w    d0,42(a0)
  140.     cmp.w    42(a0),d1
  141.     bcs.s    .j
  142.     move.w    d1,42(a0)
  143. .j    bra.s    .el
  144. .k    add.w    52(a0),d1
  145.     move.w    d1,42(a0)
  146. .el    move.l    (a0),a3
  147.     add.l    #86,a3
  148.     move.l    18(a0),d1
  149.     moveq    #0,d2
  150.     move.b    (a3,d1.l),d2
  151.     bpl.s    .m
  152.     neg.b    d2
  153.     moveq    #0,d3
  154.     move.w    50(a0),d3
  155.     sub.w    d2,d3
  156.     move.w    d3,d2
  157.     bra.s    .n
  158. .m    add.w    50(a0),d2
  159. .n    move.w    d2,24(a0)
  160.     addq.l    #1,18(a0)
  161.     cmp.l    #8,18(a0)
  162.     bne.s    .o
  163.     clr.l    18(a0)
  164. .o    move.l    (a0),a3
  165.     tst.w    12(a0)
  166.     beq.s    .p
  167.     clr.w    12(a0)
  168.     moveq    #0,d2
  169.     move.b    85(a3),d2
  170.     move.w    42(a0),d1
  171.     add.w    d2,d1
  172.     move.w    d1,42(a0)
  173.     bra.s    .q
  174. .p    move.w    #-1,12(a0)
  175.     moveq    #0,d2
  176.     move.b    85(a3),d2
  177.     move.w    42(a0),d1
  178.     sub.w    d2,d1
  179.     move.w    d1,42(a0)
  180. .q    moveq    #0,d2
  181.     move.w    96(a3),d2
  182.     sub.w    d2,52(a0)
  183.     moveq    #0,d0
  184.     move.w    42(a0),d0
  185.     move.w    98(a3),d1
  186.     beq.s    .s
  187.     bmi.s    .r
  188.     sub.w    56(a0),d0
  189.     bra.s    .s
  190. .r    add.w    56(a0),d0
  191. .s    move.l    8(a0),d1
  192.     subq.b    #1,16(a0)
  193.     bpl.s    .u
  194.     addq.l    #1,d1
  195.     cmp.l    #32,d1
  196.     bne.s    .t
  197.     moveq    #0,d1
  198. .t    move.l    d1,8(a0)
  199.     move.b    82(a3),16(a0)
  200. .u    lea    50(a3),a4
  201.     moveq    #0,d2
  202.     move.b    (a4,d1.l),d2
  203.     ext.w    d2
  204.     tst.b    84(a3)
  205.     beq.s    .v
  206.     add.w    d2,d0
  207. .v    move.w    d0,6(a2)
  208.     moveq    #0,d2
  209.     move.l    (a0),a2
  210.     moveq    #0,d0
  211.     moveq    #0,d1
  212.     move.b    48(a2),d0
  213.     move.b    49(a2),d1
  214.     cmp.l    4(a0),d1
  215.     beq.s    .z
  216.     tst.l    d0
  217.     beq.s    .ew
  218.     cmp.l    4(a0),d0
  219.     bne.s    .ew
  220.     tst.w    54(a0)
  221.     beq.s    .z
  222. .ew    move.l    4(a0),d2
  223.     add.w    d2,d2
  224.     lea    32(a2),a3
  225.     moveq    #0,d3
  226.     moveq    #0,d4
  227.     move.b    (a3,d2.w),d3
  228.     move.b    1(a3,d2.w),d4
  229.     cmp.w    56(a0),d4
  230.     bhi.s    .y
  231.     sub.w    d3,56(a0)
  232.     cmp.w    56(a0),d4
  233.     ble.s    .x
  234.     move.w    d4,56(a0)
  235.     addq.l    #1,4(a0)
  236. .x    bra.s    .z
  237. .y    add.w    d3,56(a0)
  238.     cmp.w    56(a0),d4
  239.     bhi.s    .z
  240.     move.w    d4,56(a0)
  241.     addq.l    #1,4(a0)
  242. .z    moveq    #0,d1
  243.     move.w    56(a0),d1
  244.     asr    #2,d1
  245.     move.l    26(a0),a1
  246.     move.w    d1,8(a1)
  247.     rts
  248.  
  249. trk0    dcb.b    58,0
  250. trk1    dcb.b    58,0
  251. trk2    dcb.b    58,0
  252. trk3    dcb.b    58,0
  253.  
  254. pos0    dc.l    pat1-2,1,pat1-2,-3,pat1-2,-8,pat2-2,-1,0,0
  255. pos1    dc.l    pat3-2,1,0,0
  256. pos2    dc.l    pat4-2,0,0,0
  257. pos3    dc.l    pat8-2,1,pat5-2,1,pat5-2,1,pat7-2,1,pat7-2,1,pat6-2,1,pat6-2,1,0,0,$80 ; $80 is for next part! :)
  258. pat1    dc.l    smp0,$810000,0,$19,$C0019,$180019,$60025,$60019,$C0019,$240000,$80
  259. pat2    dc.l    smp0,$810000,0,$19,$C0019,$180019,$60017,$60019,$C0019,$240000,$80
  260. pat3    dc.l    smp1,$810003,$7000003,$700003D,$600081,$30800,$30800,$3D0060,$81FE03,$7FEFE03,$7FE003D,$600081,$FE0205FE,$FE0205FE,$3D0060,$80
  261. pat4    dc.l    smp2,$810000,0,$82,$18002D,$C0082,$24002D,$C002D,$6002D,$60082,$18002D,$C0082,$24002D,$8002C,$8002B,$80000,$80
  262. pat5    dc.l    smp3,$810000,0,$31,$300034,$C0033,$C0031,$C002F,$C002D,$300034,$C0033,$C0031,$C002F,$C0034,$300034,$C0033,$C0031,$C002F,$C0036,$180033,$180031,$18002F,$180000,$80
  263. pat6    dc.l    smp3,$810000,0,$31,$300038,$C0038,$C0038,$C0036,$180038,$6C0034,$C0034,$180034,$180034,$C0036,$180033,$180031,$18002F,$180000,$80
  264. pat7    dc.l    smp3,$810000,0,$31,$480038,$180036,$C0034,$C0031,$600034,$C0034,$180034,$180034,$C0036,$180033,$180031,$18002F,$180000,$82
  265. pat8    dc.l    $1800000,0,0,0,0
  266.  
  267.     section    module,data_c
  268.  
  269. smp0    dc.l    $80889098,$A0A8B0B8,$C0C8D0D8,$E0E8F0F8,$81018,$20283038,$40485058,$60687078,$FFFF0E00,0,0,0,$20002,$4060806,$40200FE,$FCFAF8FA,$FCFE0002,$4060806,$40200FE,$FCFAF8FA,$FCFE0000,$1000000,0,0,0
  270. smp1    dc.l    $00F0E0D0,$C0B0A090,$8090A0B0,$C0D0E0F0,$00102030,$40506070,$7F706050,$40302010,$96960000,0,0,0,$00010002,$04060806,$040200FE,$FCFAF8FA,$FCFE0002,$04060806,$040200FE,$FCFAF8FA,$FCFE0000,0,0,0,0,0,0,0,0,0
  271. smp2    dc.l    $80808080,$80808080,$80808080,$80808080,$7F7F7F7F,$7F7F7F7F,$7F7F7F7F,$7F7F7F7F,$FFFF1E00,0,0,0,$20002,$4060806,$40200FE,$FCFAF8FA,$FCFE0002,$4060806,$40200FE,$FCFAF8FA,$FCFE0000,0,0,0,$FFE20000
  272. smp3    dc.l    $80808080,$80808080,$80808080,$80808080,$7F7F7F7F,$7F7F7F7F,$7F7F7F7F,$7F7F7F7F,$28AF0A64,$06000000,0,0,$02030002,$04060806,$040200FE,$FCFAF8FA,$FCFE0002,$04060806,$040200FE,$FCFAF8FA,$FCFE0000,0,0,0,0
  273. vib    dc.l    $1AC01940,$17D01680,$15301400,$12E011D0,$10D00FE0,$F000E20,$D600CA0,$BE80B40,$A980A00,$97008E8,$86807F0,$7800710,$6B00650,$5F405A0,$54C0500,$4B80474,$43403F8,$3C00388,$3580328,$2FA02D0,$2A60280,$25C023A
  274.     dc.l    $21A01FC,$1E001C4,$1AC0194,$17D0168,$1530140,$12E011D,$10D00FE,$F000E2,$D600CA,$BE00B4,$AA00A0,$97008F,$87007F
  275.     dc.b    "Kyzer/CSG, 49 Fairview Road, AB22 8ZG, Scotland."
  276.  
  277.